<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./react/react.development.js"></script>
    <script src="./react/react-dom.development.js"></script>
    <script src="./react/babel.min.js"></script>
    <script src="./react/prop-types.js"></script>
    <script src="./react/lodash.min.js"></script>
    <script src="./react/immutable.min.js"></script>

</head>
<body>
<div id="app"></div>
<script type="text/babel">

    let app = document.querySelector('#app');

    let root = ReactDOM.createRoot(app);

    class MouseXY extends React.Component {
        state = {
            x: 0,
            y: 0
        }
        componentDidMount = () => {
            document.addEventListener('mousemove', this.move)
        }
        componentWillUnmount = () => {
            document.removeEventListener('mousemove', this.move)
        }
        move = (ev) => {
            this.setState({
                x: ev.pageX,
                y: ev.pageY
            });
        }
        render(){
            return (
                <React.Fragment>
                    { this.props.render(this.state.x, this.state.y) }
                </React.Fragment>
            );
        }
    }

    class Welcome extends React.Component {
        render(){
            return (
                <MouseXY render={(x, y)=>
                    <div>
                        hello world, {x}, {y}
                    </div>
                } />
            );
        }
    }
    let element = (
        <Welcome />
    );

    root.render(element);


</script>
</body>
</html>